package com.ruoyi.system.service.impl;

import com.ruoyi.common.core.text.Convert;
import com.ruoyi.system.domain.RmUserDept;
import com.ruoyi.system.domain.SysDept;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.mapper.RmUserDeptMapper;
import com.ruoyi.system.mapper.SysDeptMapper;
import com.ruoyi.system.service.IRmUserDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 用户和部门管理关联Service业务层处理
 * 
 * @author ruoyi
 * @date 2020-02-02
 */
@Service
public class RmUserDeptServiceImpl implements IRmUserDeptService 
{
    @Autowired
    private RmUserDeptMapper rmUserDeptMapper;

    @Autowired
    private SysDeptMapper deptMapper;

    /**
     * 查询用户和部门管理关联
     * 
     * @param userId 用户和部门管理关联ID
     * @return 用户和部门管理关联
     */
    @Override
    public RmUserDept selectRmUserDeptById(Long userId)
    {
        return rmUserDeptMapper.selectRmUserDeptById(userId);
    }

    /**
     * 查询用户和部门管理关联列表
     * 
     * @param rmUserDept 用户和部门管理关联
     * @return 用户和部门管理关联
     */
    @Override
    public List<RmUserDept> selectRmUserDeptList(RmUserDept rmUserDept)
    {
        return rmUserDeptMapper.selectRmUserDeptList(rmUserDept);
    }

    /**
     * 新增用户和部门管理关联
     * 
     * @param rmUserDept 用户和部门管理关联
     * @return 结果
     */
    @Override
    public int insertRmUserDept(RmUserDept rmUserDept)
    {
        return rmUserDeptMapper.insertRmUserDept(rmUserDept);
    }

    /**
     * 修改用户和部门管理关联
     * 
     * @param rmUserDept 用户和部门管理关联
     * @return 结果
     */
    @Override
    public int updateRmUserDept(RmUserDept rmUserDept)
    {
        return rmUserDeptMapper.updateRmUserDept(rmUserDept);
    }

    /**
     * 删除用户和部门管理关联对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteRmUserDeptByIds(String ids)
    {
        return rmUserDeptMapper.deleteRmUserDeptByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除用户和部门管理关联信息
     * 
     * @param userId 用户和部门管理关联ID
     * @return 结果
     */
    @Override
    public int deleteRmUserDeptById(Long userId)
    {
        return rmUserDeptMapper.deleteRmUserDeptById(userId);
    }

    /**
     * 根据用户ID查询部门
     *
     * @param userId 用户ID
     * @return 部门列表
     */
    @Override
    public List<SysDept> selectDeptsByUserId(Long userId)
    {
        List<RmUserDept> userDepts = rmUserDeptMapper.selectRmUserDeptByUserId(userId);
        SysDept sysDept = new SysDept();
        sysDept.setParentId((long) 110);
        List<SysDept> depts = deptMapper.selectDeptList(sysDept);
        for (SysDept dept : depts)
        {
            for (RmUserDept userDept : userDepts)
            {
                if (dept.getDeptId().longValue() == userDept.getDeptId().longValue())
                {
                    dept.setFlag(true);
                    break;
                }
            }
        }
        return depts;
    }

    /**
     * 根据用户ID查询部门选择列表
     *
     * @param userId 用户ID
     * @return 部门列表
     */
    @Override
    public List<SysDept> selectDeptsSelectByUserId(Long userId){
        return deptMapper.selectRmUserDeptListSelect(userId);
    }
}
